package de.tum.in.eist.im.client.view;

import de.tum.in.eist.im.client.*;

/**
 * Exposes functions to render a view.
 * 
 * @author Christian Ivicevic (ga73yis@mytum.de)
 * @since 09-02-2011
 * @version 09-02-2011
 */
public interface IView {
	/**
	 * Initialises the {@link IView} object with the specified
	 * {@link ClientModel} object to obtain data from.
	 * 
	 * @param model
	 *            the {@link ClientModel} to obtain data from.
	 * @return the initialised {@link IView} object which can be passed to the
	 *         {@link ClientView} to be rendered.
	 */
	public IView create(ClientModel model);

	/**
	 * Renders the current {@link IView} object.
	 */
	public void render();

	/**
	 * Message sent when the {@link ClientModel} changes.
	 */
	public void update();
}